Point of sale systems typically comprise a number of different devices. Particularly important in the operation of point of sale systems are data collection devices such as keyboards, scanners, scales and the like. The point of sale system employs software to control the data collection devices, as well as other hardware components comprising the system and to process transactions. The software controlling the system must be properly coordinated when necessary to prevent erroneous data sequencing and other problems. Proper coordination is particularly important in the case of data collection devices which collect data items making up a point of sale transaction. If data items collected by components of a point of sale system are processed out of the order in which they are produced, this lack of proper sequencing can lead to erroneous results such as erroneous transaction entries. For example, suppose an operator scans a box of cereal and the data item created by the scan is buffered for some reason. The operator enters “5” on a keyboard, intending that the next scan of a product will be equivalent to scans of 5 identical products. This keyboard entry is buffered immediately. The scan of the box of cereal is then removed from the buffer and processed. The operator then scans the second product, which is a case of soda. Because of the buffering of the scan of the first product, a transaction entry is made reflecting a purchase of five boxes of cereal and one case of soda rather than the correct transaction entry, which should reflect a purchase of one box of cereal and five cases of soda.
In order to provide flexibility in designing and assembling a point of sale system, it is desirable to develop software for the system as a set of independent software components which can operate independently of one another. It is often desirable to use devices from different vendors to assemble a point of sale system, with each device being controlled by its own associated software, and it is also desirable to be able to substitute different or upgraded devices without changing the software of an already existing system. If the various software components used in the system are integrated with other components, it is difficult or impossible to use components from different vendors without adapting software used with the other components. It is also difficult to change components without changing the software in the existing system to adapt to the new components.
In order to provide flexibility in developing and using a point of sale system, it is highly desirable to use software development techniques which allow independent development and operation of different software components, producing software components that do not need to take into account the internal workings of other software components. A point of sale system, for example, may employ an executive application to provide overall control of the system, while independent software components provide control for the devices used by the system. The executive application and the various software components communicate using the external interfaces belonging to each of the components. Such an arrangement provides the various components with independence of operation and provides flexibility in the operation of the system.
However, if software components are designed to as to maximize their independence from one another, a risk is introduced that internal operations of one component which are unknown to another component may cause conflicts or improper coordination between the components. One area in particular in which such a risk exists is, as noted above, the collection of data by various devices operating in the point of sale system and the presentation of this data for processing. If independent software components are used to control the collection of data and these components present data items to a controlling or executive module for processing, a risk exists that the data items will be presented out of sequence if the executive application is unable to receive and process the data when it is collected.
In order to preserve the independence of the executive application and the various software components which control hardware devices, the executive application and the other software components frequently do not include any facilities for sequencing data coming from hardware components. It will be recognized that any point of sale system will require proper sequencing of data and that the various components which collect the data and the components which receive the data for processing will not include facilities for sequencing if their independence from one another is to be maximized. There exists, therefore, a need for techniques that will provide for proper sequencing of data coming from devices belonging to a point of sale system while preserving the independence of the software components used in the point of sale system.